/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.controlador;

import com.modelo.InmuebleP;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.TypedQuery;

/**
 *
 * @author Juan Pablo
 */
public class BusquedaController {
    
    EntityManager em;
    EntityManagerFactory emf;
    
    public BusquedaController(){
        emf= Persistence.createEntityManagerFactory("pwPU");
        em=emf.createEntityManager();
    }
    /*
     * Metodo para retornar los inmuebles filtrados por alguna palabra clave, dependiendo de la descripcion
     * ciudad, título, etc.
     */
    public ArrayList<String> darInmueblesPalClave(String palabra){
        
        TypedQuery query=em.createNamedQuery("InmuebleP.findAll", InmuebleP.class);
        
        ArrayList<String> listaIm=new ArrayList<String>();
        if(query.getResultList()!=null){
            List<InmuebleP>inP=query.getResultList();
            
            for(int i=0;i<inP.size();i++){
                InmuebleP temp=inP.get(i);
                String inmueble="";
                
                if(temp.getDescripcion().contains(palabra)){
                    //lo agrego al arraylist
                    inmueble=temp.getTitulo()+"#"+temp.getIdCiudad().getNombre()+"#"+temp.getCapacidad()+"#"+temp.getPrecioPersona()+"#"+temp.getPrecioNoche()+"#"+temp.getIdInmueble()+"#"+temp.getDescripcion()+"#"+temp.getPais()+"#"+temp.getIdUsuario().getNombre()+"#"+temp.getIdUsuario().getIdUsuario()+"#"+temp.getDireccion();
                    listaIm.add(inmueble);
                }else{
                    // busco por otro parámetro de busqqueda
                    if(temp.getIdCiudad().getNombre().contains(palabra)){
                        //lo agrego al arraylist
                        inmueble=temp.getTitulo()+"#"+temp.getIdCiudad().getNombre()+"#"+temp.getCapacidad()+"#"+temp.getPrecioPersona()+"#"+temp.getPrecioNoche()+"#"+temp.getIdInmueble()+"#"+temp.getDescripcion()+"#"+temp.getPais()+"#"+temp.getIdUsuario().getNombre()+"#"+temp.getIdUsuario().getIdUsuario()+"#"+temp.getDireccion();
                        listaIm.add(inmueble);
                    }else{
                        if(temp.getIdUsuario().getNombre().contains(palabra)){
                            //lo agrego al arraylist
                            inmueble=temp.getTitulo()+"#"+temp.getIdCiudad().getNombre()+"#"+temp.getCapacidad()+"#"+temp.getPrecioPersona()+"#"+temp.getPrecioNoche()+"#"+temp.getIdInmueble()+"#"+temp.getDescripcion()+"#"+temp.getPais()+"#"+temp.getIdUsuario().getNombre()+"#"+temp.getIdUsuario().getIdUsuario()+"#"+temp.getDireccion();
                    listaIm.add(inmueble);
                            
                        }else{
                            if(temp.getPais().contains(palabra)){
                                //lo agrego al arraylist
                                inmueble=temp.getTitulo()+"#"+temp.getIdCiudad().getNombre()+"#"+temp.getCapacidad()+"#"+temp.getPrecioPersona()+"#"+temp.getPrecioNoche()+"#"+temp.getIdInmueble()+"#"+temp.getDescripcion()+"#"+temp.getPais()+"#"+temp.getIdUsuario().getNombre()+"#"+temp.getIdUsuario().getIdUsuario()+"#"+temp.getDireccion();
                                listaIm.add(inmueble);
                                
                            }else{
                                if(temp.getTipo().contains(palabra)){
                                    //lo agrego al arraylist
                                    inmueble=temp.getTitulo()+"#"+temp.getIdCiudad().getNombre()+"#"+temp.getCapacidad()+"#"+temp.getPrecioPersona()+"#"+temp.getPrecioNoche()+"#"+temp.getIdInmueble()+"#"+temp.getDescripcion()+"#"+temp.getPais()+"#"+temp.getIdUsuario().getNombre()+"#"+temp.getIdUsuario().getIdUsuario()+"#"+temp.getDireccion();
                                    listaIm.add(inmueble);
                                    
                                }else{
                                    if(temp.getTitulo().contains(palabra)){
                                        //lo agrego al arraylist
                                        inmueble=temp.getTitulo()+"#"+temp.getIdCiudad().getNombre()+"#"+temp.getCapacidad()+"#"+temp.getPrecioPersona()+"#"+temp.getPrecioNoche()+"#"+temp.getIdInmueble()+"#"+temp.getDescripcion()+"#"+temp.getPais()+"#"+temp.getIdUsuario().getNombre()+"#"+temp.getIdUsuario().getIdUsuario()+"#"+temp.getDireccion();
                                        listaIm.add(inmueble);
                                        
                                    }else{
                                        if(temp.getTipoHabitacion().contains(palabra)){
                                           //lo agrego al arraylist 
                                            inmueble=temp.getTitulo()+"#"+temp.getIdCiudad().getNombre()+"#"+temp.getCapacidad()+"#"+temp.getPrecioPersona()+"#"+temp.getPrecioNoche()+"#"+temp.getIdInmueble()+"#"+temp.getDescripcion()+"#"+temp.getPais()+"#"+temp.getIdUsuario().getNombre()+"#"+temp.getIdUsuario().getIdUsuario()+"#"+temp.getDireccion();
                                            listaIm.add(inmueble);
                                            
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        
        return listaIm;
    }
    
}
